package view
{
	import flash.events.Event;
	
	import mx.controls.Alert;
	import model.AnneeUniversitaire;
	import model.Jour;
	import model.Semaine;
	import model.proxy.AnneeUniversitaireProxy;
	
	import org.puremvc.as3.interfaces.IMediator;
	import org.puremvc.as3.interfaces.INotification;
	import org.puremvc.as3.patterns.mediator.Mediator;
	
	import view.components.AnneeUniversitairePanel;
	
	public class AnneeUniversitairePanelMediator extends Mediator implements IMediator 
	{ 
		
		public static const NAME : String = 'AnneeUniversitairePanelMediator'; 
			
		/** 
		 * Constructor 
		 * Listen event of the component to send notification 
		 */ 
		 public function AnneeUniversitairePanelMediator(viewComponent : AnneeUniversitairePanel) 
		 { 
		 	super(NAME, viewComponent); 
		 	viewComponent.addEventListener(AnneeUniversitairePanel.OBTENIR_LISTE_ANNEES_UNIVERSITAIRE, obtenirListeAnneesUniversitaireNotification);
		 	viewComponent.addEventListener(AnneeUniversitairePanel.OBTENIR_LISTE_JOURS_FERIES_ANNEE_UNIV, obtenirListeJoursFeriesNotification);
		 	viewComponent.addEventListener(AnneeUniversitairePanel.VALIDER_AJOUT_ANNEE_UNIVERSITAIRE, validerAjoutAnneesUniversitaireNotification);
		 	viewComponent.addEventListener(AnneeUniversitairePanel.VALIDER_MODIF_ANNEE_UNIVERSITAIRE, validerModifAnneesUniversitaireNotification);
		 } 
		 
		 private function obtenirListeAnneesUniversitaireNotification(event : Event=null):void
		 { 
			 sendNotification(AnneeUniversitairePanel.OBTENIR_LISTE_ANNEES_UNIVERSITAIRE, null);
		 }
		
		 private function obtenirListeJoursFeriesNotification(event : Event=null):void
		 { 
		 	 var anneeUniversitaire:AnneeUniversitaire = anneeUniversitairePanel.comboAnneeUniversitaire.selectedItem.valueOf();
			 sendNotification(AnneeUniversitairePanel.OBTENIR_LISTE_JOURS_FERIES_ANNEE_UNIV, anneeUniversitaire);
		 }
		 
		 private function validerAjoutAnneesUniversitaireNotification(event : Event=null):void
		 {
		 	 var anneeUniversitaire:AnneeUniversitaire = new AnneeUniversitaire();
		 	 anneeUniversitaire.nom = anneeUniversitairePanel.annee_rentre.text;
			 anneeUniversitaire.num_premier_jour = parseInt(anneeUniversitairePanel.num_premier_jour.text);
			 anneeUniversitaire.mois_debut = anneeUniversitairePanel.mois_debut.text;
			 anneeUniversitaire.mois_fin = anneeUniversitairePanel.mois_fin.text;
			 sendNotification(AnneeUniversitairePanel.VALIDER_AJOUT_ANNEE_UNIVERSITAIRE, anneeUniversitaire); 
		 }
		 
		 private function validerModifAnneesUniversitaireNotification(event : Event=null):void
		 {
//		 	var jourferies:Array = (anneeUniversitairePanel.jours_feries as Array);
//		 	for (var i:int=0; i < joursferies.lenght; i++)
//		 	 {	
		 		var anneeUniversitaire:AnneeUniversitaire = anneeUniversitairePanel.comboAnneeUniversitaire.selectedItem.valueOf(); 
//				var semaines:Array = (anneeUniversitaire.collSemaines as Array);
//				for (var i:int=0; i < semaines.length; i++)
//					{
//						var semaine : Semaine = (semaines[i] as Semaine);
//						var jours:Array= (semaine.collJours as Array);
//						for (var j:int=0; j < jours.length; j++)
//							{
//								var jour : Jour = (jours[j] as Jour);
//								var jourferies:Array = (anneeUniversitairePanel.jours_feries as Array);
//		 						for (var k:int=0; i < joursferies.lenght; i++)
//								{
//									var jf:String = (joursferies[k] as String);
//									if (jour == jf)
//									{
//										jour.ferie = 1 ;
//									}	
//								}
//							}
//					} 
//		 	 }
			 sendNotification(AnneeUniversitairePanel.VALIDER_MODIF_ANNEE_UNIVERSITAIRE, anneeUniversitaire); 
		 }
		
		
		override public function listNotificationInterests():Array 
		 { 
		 	return [ AnneeUniversitaireProxy.LISTE_ANNEES_UNIVERSITAIRE_OBTENUE,
		 			AnneeUniversitaireProxy.LISTE_JOURS_FERIES_ANNEE_UNIV_OBTENUE,
		 			]; 
		 } 
		 

		 override public function handleNotification(note : INotification):void 
		 { 
			 switch (note.getName()) 
			 { 
			 	case AnneeUniversitaireProxy.LISTE_ANNEES_UNIVERSITAIRE_OBTENUE:
			 	{
			 		anneeUniversitairePanel.comboAnneeUniversitaire.dataProvider = (note.getBody() as Array);
			 		anneeUniversitairePanel.choixCombo();	
			 		break;
			 	}
			 	case AnneeUniversitaireProxy.LISTE_JOURS_FERIES_ANNEE_UNIV_OBTENUE:
			 	{
			 		anneeUniversitairePanel.jours_feries_ok.dataProvider = (note.getBody() as Array);
			 		break;
			 	} 
			 	default:
			 	break;
		 	} 
		 }
		 
		 
		private function get anneeUniversitairePanel():AnneeUniversitairePanel 
		 { 
		 	return viewComponent as AnneeUniversitairePanel; 
		 }
	}	 	
		 
}